export default {
   /**
   * 获取 UTC 字符串中的日期部分（忽略时区）
   * @param {string} utcString - UTC 时间字符串
   * @returns {string} 格式：2025-06-23
   */
  getUTCDate(utcString) {
    if (!utcString) return '';
    return utcString.split('T')[0];
  },

  /**
   * 获取 UTC 时间对应的北京时间时间部分
   * @param {string} utcString - UTC 时间字符串
   * @returns {string} 格式：08:00:00
   */
  getBeijingTimePart(utcString) {
    if (!utcString) return '';
    const date = new Date(utcString);
    const beijingTime = new Date(date.getTime() + 8 * 60 * 60 * 1000);
    return beijingTime.toTimeString().split(' ')[0];
  },

  /**
   * 格式化日期时间为 YYYY-MM-DD HH:mm:ss
   * @param {Date|string|number} date - 日期对象、时间戳或日期字符串
   * @returns {string} 格式化后的日期时间
   */
  formatDateTime(date) {
    if (!date) return '';
    const d = new Date(date);
    const year = d.getFullYear();
    const month = String(d.getMonth() + 1).padStart(2, '0');
    const day = String(d.getDate()).padStart(2, '0');
    const hours = String(d.getHours()).padStart(2, '0');
    const minutes = String(d.getMinutes()).padStart(2, '0');
    const seconds = String(d.getSeconds()).padStart(2, '0');
    return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
  },

  /**
   * 格式化日期为 YYYY-MM-DD
   * @param {Date|string|number} date - 日期对象、时间戳或日期字符串
   * @returns {string} 格式化后的日期
   */
  formatDate(date) {
    return this.formatDateTime(date).split(' ')[0];
  },

  /**
   * 获取当前时间的时间戳（毫秒）
   * @returns {number} 时间戳
   */
  now() {
    return Date.now();
  },

  /**
   * 获取当前 UTC 时间字符串
   * @returns {string} UTC 时间字符串
   */
  nowUTC() {
    return new Date().toISOString();
  },

  /**
   * 获取当前北京时间字符串
   * @returns {string} 北京时间字符串
   */
  nowBeijing() {
    return this.utcToBeijing(this.nowUTC());
  },

  /**
   * 将时间戳转换为日期时间字符串
   * @param {number} timestamp - 时间戳（毫秒）
   * @returns {string} 日期时间字符串
   */
  timestampToDateTime(timestamp) {
    return this.formatDateTime(new Date(timestamp));
  },

  /**
   * 将日期时间字符串转换为时间戳
   * @param {string} dateTime - 日期时间字符串（如：2025-06-23 12:00:00）
   * @returns {number} 时间戳（毫秒）
   */
  dateTimeToTimestamp(dateTime) {
    return new Date(dateTime).getTime();
  },

  /**
   * 计算两个日期之间的天数差
   * @param {Date|string} date1 - 第一个日期
   * @param {Date|string} date2 - 第二个日期
   * @returns {number} 天数差（正数表示 date1 在 date2 之后）
   */
  daysBetween(date1, date2) {
    const d1 = new Date(date1);
    const d2 = new Date(date2);
    const diffTime = Math.abs(d2 - d1);
    return Math.ceil(diffTime / (1000 * 60 * 60 * 24));
  },
};

// // 使用示例
// console.log(timeutil.utcToBeijing('2025-06-23T16:00:00.000Z')); // 2025-06-24 00:00:00
// console.log(timeutil.formatDate(new Date())); // 当前日期
// console.log(timeutil.nowBeijing()); // 当前北京时间
// console.log(timeutil.daysBetween('2025-01-01', '2025-01-10')); // 9
